home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Tools / term-2.3.5 / INSTALL < prev    next >
Encoding:
Text File  |  1995-07-14  |  8.5 KB  |  189 lines

  1. Installation Guide to Term
  2. ==========================
  3.  
  4. The quick way to install term is as follows:
  5.  
  6.    If you have access to root:
  7.     % ./configure --root
  8.     % make
  9.     % su -c 'make install installman'
  10.    otherwise,
  11.         % ./configure --user
  12.     % make install installman
  13.  
  14. For group-shared or user-shared, replace "install" with "share" in the 
  15. "make install installman" command.  If term is your only network connection
  16. then also add "installnet" to your make command.  Here is the command I run:
  17.  
  18.     % ./configure --root;make;su -c 'make installnet installman'
  19.  
  20.  
  21. For more detailed information, read on.
  22.  
  23.  
  24. Configure
  25. ---------
  26.  
  27. The "configure" tool is responsible for generating a Makefile from the
  28. supplied Makefile.in.  In theory, you shouldn't have to modify either 
  29. one to support most standard installations.
  30.  
  31. "configure" attempts to autodetect the type of system it is running on,
  32. by examining the output of "uname", "arch", or tcsh's $HOSTTYPE, or by
  33. performing other OS-specific tests.  If this doesn't work for you for
  34. some reason, you will need to specify the name of the OS on the command
  35. line to "configure".  Currently configurable systems are:
  36.  
  37.       aix            IBM AIX
  38.       bsdi           BSDi
  39.      *convex         C220 ConvexOS 11.0
  40.       dynixptx       Dynix/PTX
  41.      *hcx            HCX/UX 5.1
  42.       hpux           HP/UX
  43.       irix           Irix
  44.      *linux          Linux 1.0, 1.1
  45.      *machten        MachTen
  46.       mips           MIPS
  47.       netbsd         NetBSD
  48.      *next           NeXT 2.1, 3.0
  49.      *osf1           OSF/1
  50.       sco            SCO Unix
  51.       sgi            SGI
  52.      *sol2           Solaris 2.x aka SunOS 5.x
  53.      *sun            Solaris 1.x aka SunOS 4.x
  54.       svr4           SVR4
  55.      *titan          Titan/OS
  56.      *ultrix         Ultrix 4.x
  57.  
  58. Systems known to autodetect are marked with a *.  If your system does not
  59. autodetect, and you can come up with some unique way of identifying it,
  60. please send in a patch.  Systems that have at least successfully run
  61. term via "./termtest" are listed below along with the version of term:
  62.  
  63.      MIPS Ultrix 4.4, gcc 2.5.8 (term 2.1.0)
  64.      SunOS 4.1.3, gcc 2.5.8 (term 2.1.0)
  65.      SunOS 5.3, gcc 2.5.6 (term 2.1.0)
  66.      Linux 1.1.x, gcc 2.5.8 (term 2.1.0)
  67.      NeXT 2.1, cc (term 2.1.0)
  68.      Alpha OSF/1 V2.0, gcc 2.5.8 (term 2.1.0)
  69.      HCX/UX 5.1, cc (term 2.1.0)
  70.  
  71. configure can be used to build the binary in a directory separate from
  72. the source.  The easiest way to do this is to cd to the build directory
  73. and invoke configure with the full path to the source directory, e.g.
  74. /usr/src/local/term/configure.  configure will generate a Makefile
  75. that looks for the source in that directory using the VPATH mechanism
  76. (supported by GNU make and various commercial makes).  If for some reason
  77. you need to explicitly specify the source directory, you may use the
  78. --srcdir option of configure.
  79.  
  80. configure by default will ask you if you can install as root.  If so,
  81. it will default to installing into /usr/local (and using group sharing
  82. if you select shared mode).  If not, configure will generate a default
  83. Makefile that will install term into your home directory and configure
  84. it for user sharing (if you select shared mode).  You may specify 
  85. --root or --user on the command line to avoid the question.
  86.  
  87. The --prefix option to configure can be used to specify a different target
  88. destination.  A standard layout with lib, bin, and man directories at that
  89. point is assumed.  If you prefer to specify a non-standard arrangement,
  90. you can use the --mandir, --bindir, --libdir, and --sharedir arguments
  91. to provide the paths to the directories you would like to install into.
  92.  
  93. Finally, configure accepts --shlib and --static options to enable
  94. or disable creating and using a dynamic libtermnet library on those
  95. platforms that support such libraries (currently Linux, NetBSD, SunOS 4.x,
  96. and Solaris 2.x support is provided).  By default, under Linux, installing 
  97. with --root will get dynamic libraries, and with --user will not (since
  98. shared libraries require LD_LIBRARY_PATH to be set if installed by a
  99. user).  NetBSD, SunOS 4.x, and Solaries 2.x will default to shared 
  100. libraries either way.
  101.  
  102. After configure is run, it creates a "config.status" file in the build
  103. directory.  This file can be executed to reconfigure the Makefile if
  104. the Makefile.in file is changed.  GNU make will do this automatically
  105. when you type "make", if necessary.
  106.  
  107. Note that if your .term directory is mounted over NFS, you will need to
  108. edit the Makefile.in to add -DTERM_NFS_DIR to CFLAGS.  Or even better,
  109. use user share-mode, and link ~/term/tmp to a directory that is not
  110. NFS mounted like /usr/tmp or /tmp.
  111.  
  112. If you need to change either configure or Makefile.in for any other
  113. reason, see if you can abstract the changes out into a form similar
  114. to that used elsewhere and send in a patch.
  115.  
  116.  
  117. Linux Shared Library Notes
  118. --------------------------
  119.  
  120. You will need to have the Linux tools-2.11 toolset or newer installed
  121. to build the default Linux shared library version.  The current version
  122. is available from sunsite.unc.edu:/pub/Linux/gcc/src/tools-2.15.tar.gz.
  123. If you don't want to be bothered, use configure --static to build static
  124. versions of the tools (as was done with term 1.18 and earlier versions).
  125.  
  126. If you are building for Linux with shared libraries, and wish to try
  127. testing a new set of binaries before installing them, you will have
  128. to do a "make install-shlib" as root after the "make", or the binaries
  129. will either not find the shared library, or use the previous version
  130. if you have such installed.
  131.  
  132. If you would like to hack on the term code, and don't know anything
  133. about shared libraries, you can either just use --static and rely on
  134. the maintainer to fold your changes in with dynamic library support,
  135. or you can do it yourself with the following brief guide.  (The best
  136. thing to do is to read the tools doc/README.ps file, which explains
  137. in detail the what, how, and why of shared libraries.)
  138.  
  139. If you don't add any new functions or data, and don't make any of the
  140. global variables larger (e.g. expanding arrays), the dynamic library
  141. configuration won't change.  You are happy; don't read any further.
  142.  
  143. If you do add new functions or data, you will do `make' and get:
  144.  
  145.     *** WARNING: ./jump/jump.log exists!
  146.  
  147. or some similar message.  The jump.log file in the jump directory contains
  148. new symbols (functions or data) that have to be integrated into the
  149. shared library configuration files before you can rebuild the library.
  150.  
  151. Look at the jump.log file.  If all the new entries are marked with " T "
  152. (that is, functions), you are in luck.  Just append the file to 
  153. jump.funcs, make clean, and try again.
  154.  
  155. If there are some non-T symbols, these represent data.  You will need
  156. to convert the initial field full of zeros into a hexadecimal value
  157. corresponding to the largest you think that variable will ever be.
  158. Most globals are ints, which take four bytes (see the existing jump.vars
  159. file for an example).  For arrays (like com_result), you need to decide
  160. if the array is likely to grow in the future, and pick some reasonable
  161. upper bound value to put in the initial field to represent the array's
  162. size in bytes.  If you're not sure what the current size of a variable
  163. is, do a `nm -n' on the object file to get a listing of the symbols
  164. and their addresses.  "C" (common, or bss) symbols simply list their
  165. size in the address field, so that's easy.  For "D" symbols, you need to
  166. subtract the address of your symbol from that of the following "D" symbol
  167. to get the size (if there is no following symbol, you're on your own).
  168. Once you've updated all the size fields, add the relevant lines to the
  169. jump.vars file.  (Note that we didn't mention the size for "T" symbols
  170. in the previous paragraph.  That was on purpose; the size field for "T"
  171. symbols isn't used.)
  172.  
  173. If all of this seems a little confusing, you should probably read through
  174. the tools documentation to get the bigger picture.  Shared libraries
  175. are the most confusing part of building code for Linux (although they
  176. are more efficient than shared libraries in use on other platforms).
  177.  
  178. For the dll buff, the termnet library is using addresses 0x66000000
  179. through 0x660fffff.  The jump table size limit is 0x1000, and the global
  180. data size 0x4000.  The version number corresponds to the fields of the
  181. VERSION variable; thus for VERSION 11854, the library version is 1.18.54.
  182. We hope to keep libraries backwards compatible; if for some reason
  183. we have to bump the library major version before bumping term's major
  184. version number, we will stop keeping a close correspondence with VERSION.
  185.  
  186.  
  187. (Installation guide written by Chris Metcalf <metcalf@lcs.mit.edu>;
  188. bugs to Bill Riemers <bcr@physics.purdue.edu.)
  189.